/* SPDX-License-Identifier: BSD-2-Clause */
/** @file
 * Processor or Compiler specific defines and types for IA-32 architecture.
 */

#ifndef __PROCESSOR_BIND_H__
#define __PROCESSOR_BIND_H__


/*
 * This to mimic a processor binding for EDK. This is just to provide the
 * processor types.
 */
#include <inttypes.h>

///
/// Define the processor type so other code can make processor based choices.
///
#define MDE_CPU_IA32

///
/// 8-byte unsigned value.
///
typedef uint64_t UINT64;
///
/// 8-byte signed value.
///
typedef int64_t INT64;
///
/// 4-byte unsigned value.
///
typedef uint32_t UINT32;
///
/// 4-byte signed value.
///
typedef int32_t INT32;
///
/// 2-byte unsigned value.
///
typedef uint16_t UINT16;
///
/// 2-byte Character.  Unless otherwise specified all strings are stored in the
/// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
///
typedef uint16_t CHAR16;
///
/// 2-byte signed value.
///
typedef int16_t INT16;
///
/// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
/// values are undefined.
///
typedef unsigned char BOOLEAN;
///
/// 1-byte unsigned value.
///
typedef unsigned char UINT8;
///
/// 1-byte Character
///
typedef char CHAR8;
///
/// 1-byte signed value
///
typedef signed char INT8;

///
/// Unsigned value of native width.  (4 bytes on supported 32-bit processor instructions;
/// 8 bytes on supported 64-bit processor instructions.)
///
typedef uintptr_t UINTN;
///
/// Signed value of native width.  (4 bytes on supported 32-bit processor instructions;
/// 8 bytes on supported 64-bit processor instructions.)
///
typedef intptr_t INTN;

//
// Processor specific defines
//

///
/// A value of native width with the highest bit set.
//  Not needed for non-runtime, but it shouldb
///
//#define MAX_BIT     0x80000000

// No API requirements as this is not for runtime.
#define EFIAPI

#endif
